関数型言語テイスティング: Haskell, Scala, Clojure, Elixirを比べて味わう関数型プログラミングの旨さ
https://fortee.jp/2025fp-matsuri/proposal/f7646b8b-29b0-4ac4-8ec3-46cabaa8ef1a
https://www.docswell.com/s/lagenorhynque/Z6VX6E-functional-language-tasting-haskell-scala-clojure-elixir
FP(関数型プログラミング)
純粋関数 を基本要素としてその組み合わせによってプログラムを構成する プログラミングスタイル
言語を問わず実践可能
FPL(関数型言語)
FP が言語・標準ライブラリ レベルで十分に支援される言語
関数型プログラミングスタイルが ユビキタス な言語
関数
https://gyazo.com/cdc68b96adf2f5a816348092d74aa8bf
部分式(部分適用)を関数として抽出し、関数を組み合わせて(関数合成)式を構成する
データ
https://gyazo.com/f50648c3e4bf453fbaa8db48b035cf84
FPL では、イミュータブル なデータを関数を介して変換する
また、データ型を定義したり、構築したり、分解することが可能
評価瀬略
https://gyazo.com/7e4179890dc0725862653bfe5533b440
純粋関数やイミュータブルなデータを前提とすると、評価の順序やタイミングの自由度が高まる
具体的には 遅延評価 や メモ化 が可能に
(FPL に限った話ではないが)マクロ でも評価の制御は可能
ポリモーフィズム
https://gyazo.com/f048188ee6db591388b24016886f611c
OOP だと 継承 による仕組み(サブタイプ多相 の一例)が想起される
しかし、FPL では アドホック多相 や パラメータ多相 など異なる機構が提供されていることが多い
e.g. 型クラス、マルチメソッド、型パラメータ ...
関数型プログラマの メンタルモデル
https://gyazo.com/d58e76a420d7233ae498834a677f0749
適切な制約は解放をもたらす
引数に対して戻り値を返す以外のことをする関数は信頼できない → 純粋関数
破壊的変更 なデータ構造は怖い → イミュータブルデータ / 永続化データ構造
取りうる値が分からないのは不安 → 不正値を表現不能に、より 型安全 に
単純で安定したブロックをベースに全体を構成したい
式指向、宣言的、合成可能
#関数型まつり_2025